Group Communication Systems (GCSs) are powerful building blocks that facilitate the development of fault-tolerant distributed systems. Classical GCS applications include replication using a variant of the state machine/active replication approach, primary-backup replication, support for distributed and clustered operating systems, distributed transactions and database replication, resource allocation, load 20 balancing, system management and highly available servers. More recently, GCSs have been exploited for collaborative computing including distance learning, drawing on a shared white board, video and audio conferences and even distributed musical jam sessions over a network. Currently, real-time GCSs are being exploited for real-time applications, for example, radar tracking.
GCSs can be used to provide highly available service, which are services that require maintaining a consistent shared state among numerous computers in order to guarantee high performance and availability. An example is using replicated databases. A number of instances of a database can exist in several different locations. The databases must all be kept synchronized in such a way that a client can query or update any of the databases and the results will be the same as if only a single copy of the database existed.